package com.example.dziennikposilkow.importXML;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.widget.Toast;

import com.example.dziennikposilkow.R;
import com.example.dziennikposilkow.model.Product;
import com.example.dziennikposilkow.model.Products;

//import com.example.dziennikposilkow.R;

public class XMLReader extends Activity {

	// InputStream is = context.getResources().openRawResource(R.xml.myfile);
	// TODO pobranie podkategorii z pliku XML - pierwsze przejscie; drugie
	// przejscie readAllData

	// tablica z podkategoriami
	public String[] subcategories = { "Mleko", "SmietanaISmietanka",
			"NapojeMleczne", "Sery", "Lody", "Jaja2",
			"BaraninaCielecinaKonina", "Wieprzowina", "Wolowina",
			"PodrobyMiesne", "GesIndykKaczka", "KuraPodrobyDrobiowe",
			"WedlinyWieprzoweWoloweMieszane", "WedlinyZIndykaZKurczaka",
			"Ryby", "RybyWedzone", "PrzetworyRybne", "Tluszcze2",
			"MakiKaszeZiarna", "RyzMakarony", "Pieczywo",
			"ProduktySniadaniowe", "WarzywaSwieze", "WarzywaMrozone",
			"PrzetworyWarzywne", "OwoceSwieze", "OwoceMrozoneISuszone",
			"PrzetworyOwocowe", "OrzechyNasionaZiarna2", "CukierMiodCukierki",
			"KakaoCzekoladaWyrobyCzekoladowe", "PieczywoCukiernicze",
			"NapojeISoki", "Alkohole", "Zupy", "DaniaGotoweObiady", "Chipsy",
			"McDonalds", "InnePP", "Napoje", "Kotlety",
			"PasztetyIProduktyPodobne", "ParowkiIWedlinySojowe", "InnePW",
			"MrBig", "Vitalmax" };

	// klasa Products zawiera nazwe podkategorii i tablice wszystkich produktow
	// z danej podkategorii


	/**
	 * odczytuje dane o produktach z zadanej podkategorii
	 */
	public Products readData(XmlPullParser xpp, String subcategory) {
		List<Product> dataList = new ArrayList<Product>();
		try {
			int eventType = xpp.getEventType();
			boolean readingProducts = false;
			boolean readingXML = true;
			while (eventType != XmlPullParser.END_DOCUMENT && readingXML) {
				String name = null;
				switch (eventType) {
				case XmlPullParser.START_DOCUMENT:
					// TODO
					break;
				case XmlPullParser.START_TAG:
					name = xpp.getName();
					if (name.equals(subcategory)) {
						readingProducts = true;
					} else if (readingProducts) {
						Product product = new Product();
						for (int i = 0; i < 36; i++) {
							String dane = readText(xpp);
							product.setProductInfoField(i, dane);
						}
						dataList.add(product);

					}
					break;
				case XmlPullParser.END_TAG:
					name = xpp.getName();
					if (name.equals(subcategory)) {
						readingXML = false;
						readingProducts = false;
					}

					break;
				}
				eventType = xpp.next();
			}

		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Products p = new Products();
		// LIST TO ARRAY
		p.productsArray = dataList.toArray(new Product[dataList.size()]);
		p.subcategory = subcategory;

		return p;
	}

	/**
	 * czyta nastepny tekst w pliku xml, o ile plik sie nie zakonczyl
	 */
	public String readText(XmlPullParser xpp) throws IOException,
			XmlPullParserException {
		String result = "";
		try {

			while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
				if (xpp.next() == XmlPullParser.TEXT) {
					result = xpp.getText();
					return result;
				}
			}
		} catch (Throwable t) {
			Toast.makeText(this, "Request failed: " + t.toString(),
					Toast.LENGTH_LONG).show();
		}
		return "";
	}

}
